# RVC Controller SW — Use Case Specification (Brief Format)

| 항목 | 내용 |
|------|------|
| 문서 번호 | RVC-UC-002 |
| 버전 | v2.0 |
| 작성일 | 2026-05-29 |
| 작성자 | OOAD Team 9 |
| 상태 | 초안 (Draft) |

---

## 변경 이력 (Change History)

| 버전 | 날짜 | 변경 내용 | 작성자 |
|------|------|-----------|--------|
| v1.0 | 2026-05-19 | 최초 작성 — FR 기반 Brief Format Use Case 도출 | OOAD Team 9 |
| v2.0 | 2026-05-29 | HW 변경 반영 — 우측 장애물 센서 제거. 우회전 후 전방 센서를 이용한 우측 감지 방식으로 UC-03, UC-04, UC-05 변경 | OOAD Team 9 |

---

## v1 → v2 변경 요약 (Change Summary)

| 변경 구분 | 대상 | 변경 내용 요약 |
|-----------|------|---------------|
| **[변경]** | Actor 정의 — Obstacle Sensor | 우측 센서 제거. 전방·좌측 센서만 물리 센서로 존재 |
| — | UC-01 | 변경 없음 |
| — | UC-02 | 변경 없음 |
| **[변경]** | UC-03 | 방향 결정 로직 변경 — 좌측 막힘 시 우회전 후 전방 센서로 우측 확인 |
| **[변경]** | UC-04 | 우측 HW 센서 감지 제거. 우회전 후 전방 센서를 통한 우측 감지 포함 |
| **[변경]** | UC-05 | 트리거 조건 변경(우측 확인 방법). 후진 후 BACK 방향 고정 회전 삭제 → 재판단 후 좌/우 회전 |
| — | UC-06 | 변경 없음 |
| — | UC-07 | 변경 없음 |
| — | UC-08 | 변경 없음 |

---

## 1. Actor 정의

| Actor | 분류 | 설명 | 변경 구분 |
|-------|------|------|-----------|
| **RVC System** | Primary Actor | 자동 청소를 수행하는 로봇 청소기 시스템 | — |
| **Obstacle Sensor** | Supporting Actor | 전방·좌측 장애물 감지 센서 (우측 센서 제거) | **[변경]** |
| **Dust Sensor** | Supporting Actor | 먼지 감지 센서 | — |

> RVC는 완전 자율 시스템으로, 사람(Human Actor)이 직접 개입하는 Use Case는 존재하지 않는다.

> **[변경] Obstacle Sensor:**  
> v1에서는 전방·좌측·우측 세 방향 센서를 포함하였으나, v2에서는 우측 장애물 센서가 HW에서 제거되었다.  
> 우측 방향 장애물 감지는 물리 센서가 아닌 **RVC의 우회전 기동 + 전방 센서**를 통해 수행된다.

---

## 2. Use Case 목록

| UC ID | Use Case 명 | 관련 FR | 변경 구분 |
|-------|-------------|---------|-----------|
| UC-01 | Perform Normal Cleaning | FR-MOV-01, FR-CLN-01 | — |
| UC-02 | Detect Obstacle (Front) | FR-SEN-01, FR-SEN-05 | — |
| UC-03 | Avoid Front Obstacle | FR-MOV-02, FR-MOV-03, FR-MOV-04 | **[변경]** |
| UC-04 | Detect Side Obstacles | FR-SEN-02, FR-SEN-03(신), FR-SEN-05 | **[변경]** |
| UC-05 | Avoid All-Direction Obstacle | FR-MOV-05, FR-MOV-06, FR-MOV-07 | **[변경]** |
| UC-06 | Detect Dust | FR-SEN-04, FR-SEN-05 | — |
| UC-07 | Boost Cleaning Power | FR-CLN-02, FR-CLN-03, FR-CLN-04 | — |
| UC-08 | Handle Sensor Error | NFR-REL-01, NFR-SAF-02 | — |

---

## 3. Use Cases (Brief Format)

---

### UC-01: Perform Normal Cleaning

**Actor:** RVC System  
**변경 구분:** —  
**Summary:**  
RVC는 시작 후 아무 장애물·먼지 이벤트가 없는 정상 상태에서 직진하며 청소(흡입·걸레질)를 지속적으로 수행한다.

---

### UC-02: Detect Obstacle (Front)

**Actor:** Obstacle Sensor → RVC System  
**변경 구분:** —  
**Summary:**  
전방 센서가 장애물을 감지하면 센서 데이터를 Controller에 즉시 전달하여 장애물 존재를 알린다.

---

### UC-03: Avoid Front Obstacle

**Actor:** RVC System  
**Trigger:** UC-02 (전방 장애물 감지)  
**변경 구분:** **[변경]**  
**Summary:**  
전방 장애물 감지 시 RVC는 이동을 정지하고, 좌측 또는 우측으로 방향을 전환한 뒤 전진을 재개하여 청소를 계속한다.  
방향 전환 방향(좌/우)은 다음 순서로 결정된다.

1. 좌측 센서를 확인하여 좌측이 비어 있으면 좌회전한다.
2. 좌측이 막혀 있으면 우회전 후 전방 센서로 우측 방향 장애물 유무를 확인한다.
   - 우측이 비어 있으면 우회전을 완료하고 전진을 재개한다.
   - 우측도 막혀 있으면 UC-05로 진입한다.

> **v1과의 차이:**  
> v1에서는 좌측 센서와 우측 센서를 동시에 조회하여 방향을 결정하였다.  
> v2에서는 우측 HW 센서가 없으므로, 우측 방향 확인이 필요한 경우 우회전 후 전방 센서를 이용하여 우측 장애물 유무를 판단한다. (FR-MOV-03 변경, FR-SEN-03 추가)

---

### UC-04: Detect Side Obstacles

**Actor:** Obstacle Sensor → RVC System  
**변경 구분:** **[변경]**  
**Summary:**  
측면 장애물 정보를 Controller에 전달한다. UC-03 실행 중 방향 결정 및 UC-05 진입 조건 판단에 활용된다.  
좌측과 우측 감지 방식이 서로 다르다.

- **좌측 감지:** 좌측 장애물 센서(HW)가 장애물을 직접 감지하여 Controller에 전달한다.
- **우측 감지:** 우측 HW 센서가 없으므로, RVC가 우측으로 90° 회전한 후 전방 센서를 이용하여 우측 방향의 장애물 유무를 확인한다.

> **v1과의 차이:**  
> v1에서는 좌측·우측 두 HW 센서가 각각 독립적으로 장애물을 감지하였다. (FR-SEN-02, FR-SEN-03)  
> v2에서는 우측 HW 센서(구 FR-SEN-03)가 삭제되고, 우회전 후 전방 센서를 이용한 우측 감지 방식(신 FR-SEN-03)으로 대체된다.  
> UC의 이름은 유지되나, 우측 감지 방식이 수동 센서 조회에서 능동 기동(우회전 + 전방 센서 읽기)으로 변경된다.

---

### UC-05: Avoid All-Direction Obstacle

**Actor:** RVC System  
**Trigger:** UC-03 내 — 전방 막힘 + 좌측 막힘 + 우회전 후 전방 센서가 우측도 막힘 확인  
**변경 구분:** **[변경]**  
**Summary:**  
전방·좌측·우측 모두 장애물이 감지된 경우 RVC는 후방으로 이동한 뒤, 좌측 및 우측 방향을 다시 판단하여 회전하고 전진을 재개하여 청소를 계속한다.

> **v1과의 차이 (두 가지):**  
>
> 1. **트리거 조건 변경:** v1에서는 전방·좌·우 HW 센서가 동시에 장애물을 감지하여 진입하였다. v2에서는 우측 확인이 우회전 후 전방 센서로 이루어지므로, UC-03의 방향 판단 흐름 내에서 우측도 막힘이 확인된 경우 본 UC로 진입한다.
>
> 2. **후진 후 회전 방향 변경:** v1에서는 후진 완료 후 고정된 후방 방향(`BACK`, 180° 회전)으로 전환하였다. v2에서는 고정 BACK 방향 회전을 삭제하고, 후진 완료 후 UC-03의 방향 판단 로직(좌측 센서 확인 → 좌측 막힘 시 우회전 후 전방 센서 확인)을 동일하게 적용하여 좌측 또는 우측으로 회전한다. (FR-MOV-06 변경)

---

### UC-06: Detect Dust

**Actor:** Dust Sensor → RVC System  
**변경 구분:** —  
**Summary:**  
먼지 센서가 먼지를 감지하면 해당 데이터를 Controller에 즉시 전달하여 고농도 먼지 존재를 알린다.

---

### UC-07: Boost Cleaning Power

**Actor:** RVC System  
**Trigger:** UC-06 (먼지 감지)  
**변경 구분:** —  
**Summary:**  
먼지 감지 시 RVC는 청소 파워를 즉시 증가시키고, 설정된 시간이 경과하면 기본 청소 파워로 자동 복귀한다. 파워 부스트 중에도 이동 및 청소는 중단 없이 계속된다.

---

### UC-08: Handle Sensor Error

**Actor:** Obstacle Sensor / Dust Sensor → RVC System  
**변경 구분:** —  
**Summary:**  
센서에서 비정상 값(범위 초과, 통신 오류 등)이 수신되면 RVC는 해당 값을 무시하고 이전 유효 상태를 유지한다. 오류가 지속되면 안전을 위해 이동을 정지한다.

---

## 4. Use Case 관계도 (텍스트)

```
[Obstacle Sensor] --감지(전방)--> (UC-02: Detect Obstacle Front)
                                         |
                                  <<trigger>>
                                         |
                                 (UC-03: Avoid Front Obstacle)        [변경]
                                         |
                        [좌 막힘 → 우회전 후 전방 센서로 우측 확인]
                                         |
                             <<include>> (UC-04: Detect Side Obstacles)  [변경]
                                         |
                        [우측도 막힘 확인 시] <<extend>>
                                         |
                             (UC-05: Avoid All-Direction Obstacle)     [변경]

[Obstacle Sensor] --감지(좌측)--> (UC-04: Detect Side Obstacles)      [변경]
[RVC 우회전+전방센서] -----------> (UC-04: Detect Side Obstacles)      [추가된 감지 경로]

[Dust Sensor]     --감지--> (UC-06: Detect Dust)
                                    |
                             <<trigger>>
                                    |
                            (UC-07: Boost Cleaning Power)

[RVC System]      ---------> (UC-01: Perform Normal Cleaning)
                                    |
                         <<include>> UC-03, UC-05, UC-07

[Sensor (any)]    --오류--> (UC-08: Handle Sensor Error)
```

---

## 5. FR ↔ Use Case 추적 매트릭스

| FR ID | Use Case | 변경 구분 |
|-------|----------|-----------|
| FR-MOV-01 | UC-01 | — |
| FR-MOV-02 | UC-03 | — |
| FR-MOV-03 | UC-03 | **[변경]** |
| FR-MOV-04 | UC-03 | — |
| FR-MOV-05 | UC-05 | **[변경]** |
| FR-MOV-06 | UC-05 | **[변경]** |
| FR-MOV-07 | UC-05 | — |
| FR-SEN-01 | UC-02 | — |
| FR-SEN-02 | UC-04 | — |
| ~~FR-SEN-03 (구)~~ | ~~UC-04~~ | **[삭제]** |
| FR-SEN-03 (신) | UC-04 | **[추가]** |
| FR-SEN-04 | UC-06 | — |
| FR-SEN-05 | UC-02, UC-04, UC-06 | — |
| FR-SEN-06 | UC-08 | — |
| FR-CLN-01 | UC-01 | — |
| FR-CLN-02 | UC-07 | — |
| FR-CLN-03 | UC-07 | — |
| FR-CLN-04 | UC-07 | — |